package org.common.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类：
 * ResultSet对象虽然可以存放数据,但是它是JDBC中查询数据的一种手段,是一种数据的临时存储方案,使用完毕是要进行释放和关闭的。
 * 所以为了能够将结果集中的数据在java中进行存储和传递,我们需要准备一个和数据库表格相对应的一个类,用于封装结果集中的每一条数据,
 * 数据库表格中的每一个字段就是该类的一个属性,该类的一个对象就可以用于存储数据库表中的一条记录.
 * 这种就叫做实体类。
 * 要求:
 * 1、类名最好和表名保持一致 (见名知意)
 * 2、属性个数和数据库的表的列数保持一致
 * 3、属性的数据类型和列的数据类型保持一致
 * 4、属性名和数据库表格的列名要保持一致
 * 5、所有的属性必须都是私有的 (出于安全考虑)
 * 6、实体类的属性推荐写成包装类 (1、可以根据null值做额外判断 2、存在默认值,insert时会存在问题)
 * 7、日期类型推荐使用java.util.Date (兼容问题考虑)
 * 8、所有的属性都要有get和set方法(封装的概念)
 * 9、必须具备空参构造方法
 * 10、实体类应当实现序列化接口 (mybatis缓存  分布式需要 )
 * 11、实体类中其他构造方法可选
 * （这些要求只是建议,最好可以做到,但根据实际情况酌情变更亦可）
 *
 * @author yexi
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee implements Serializable {
    private Integer empNo;
    private String empName;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double salary;
    private Double bonus;
    private Integer deptNo;
}
